﻿using Magicodes.ExporterAndImporter.Core;
using Magicodes.ExporterAndImporter.Excel;
using RayD.Core;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Text;

namespace RayD.App.Magicodes
{    /// <summary>
     /// 导入用户数据Dto
     /// SheetName：指定Sheet名称(获取指定Sheet名称) 为空则自动获取第一个
     /// IsLabelingError：是否标注错误（默认为true）
     /// IsOnlyErrorRows：是否仅导出错误数据
     /// ImportDescription：Sheet顶部导入描述
     /// DescriptionHeight：Sheet顶部导入描述高度(换行可能无法自动设定高度,默认为Excel的默认行高)
     /// EndColumnCount：截止读取的列数（从1开始，如果已设置，则将支持空行以及特殊列）
     /// MaxCount：最大允许导入行数
     /// HeaderRowIndex：表头位置
     /// IsDisableAllFilter：是否禁用所有筛选器
     /// ImportResultFilter：导入结果筛选器 必须实现【IExporterHeaderFilter】
     /// ImportHeaderFilter：导入列头筛选器 必须实现【IImportHeaderFilter】
     /// </summary>
    [ExcelImporter(ImportResultFilter = typeof(ImportUserFilter), IsLabelingError = true)]
    public class ImportUserDto
    {
        /*
         Name：显示名称
         Description：批注
         IsAllowRepeat：是否允许重复
         AutoTrim：自动过滤空格，默认启用
         FixAllSpace：处理掉所有的空格，包括中间空格
         IsInterValidation：是否启用Excel数据验证 对于Excel数据验证，仅用于生成导入模板特性中，作为限制用户对Excel模板数据的约束性（支持MaxLengthAttribute、MinLengthAttribute、StringLengthAttribute、RangeAttribute）
         ShowInputMessage：选定单元格时，显示输入的信息 仅在IsInterValidation启用的情况下
        */
        #region 实体成员
        /// <summary>
        /// 账户
        /// </summary>	
        [ImporterHeader(Name = "账户", Description = "系统登录账户", IsAllowRepeat = false)]
        [Required(ErrorMessage = "账户不能为空")]
        public string B_Account { get; set; }
        /// <summary>
        /// 真实姓名
        /// </summary>
        [ImporterHeader(Name = "真实姓名")]
        [Required(ErrorMessage = "姓名不能为空")]
        public string B_RealName { get; set; }
        /// <summary>
        /// 工号
        /// </summary>	
        [ImporterHeader(Name = "工号", IsAllowRepeat = false)]
        [Required(ErrorMessage = "工号不能为空")]
        public string B_EnCode { get; set; }
        /// <summary>
        /// 组织架构主键
        /// </summary>		
        [ImporterHeader(Name = "所属机构")]
        [Required(ErrorMessage = "所属机构不能为空")]
        public string B_ManaframeId { get; set; }
        /// <summary>
        /// 部门主键
        /// </summary>		
        [ImporterHeader(Name = "所属部门")]
        public string B_DepartmentId { get; set; }
        /// <summary>
        /// 有效标志
        /// </summary>	
        [ImporterHeader(Name = "用户状态")]
        [Required(ErrorMessage = "用户状态不能为空")]
        public EnabledMark B_EnabledMark { get; set; }
        /// <summary>
        /// 性别（可空类型表示允许不填）
        /// </summary>	
        [ImporterHeader(Name = "性别")]
        public Gender? B_Gender { get; set; }
        /// <summary>
        /// 生日
        /// </summary>	
        [ImporterHeader(Name = "生日")]
        public DateTime? B_Birthday { get; set; }
        /// <summary>
        /// 手机
        /// </summary>
        [ImporterHeader(Name = "手机号码", IsInterValidation = true, ShowInputMessage = "最多11位数")]
        [MaxLength(11, ErrorMessage = "手机号码超出最大限制,请修改!")]
        public string B_Mobile { get; set; }
        /// <summary>
        /// 电话
        /// </summary>		
        [ImporterHeader(Name = "电话")]
        public string B_Telephone { get; set; }
        /// <summary>
        /// 电子邮件
        /// </summary>	
        [ImporterHeader(Name = "电子邮件")]
        public string B_Email { get; set; }
        /// <summary>
        /// QQ号
        /// </summary>		
        [ImporterHeader(Name = "QQ号")]
        public string B_OICQ { get; set; }
        /// <summary>
        /// 微信号
        /// </summary>	
        [ImporterHeader(Name = "微信号")]
        public string B_WeChat { get; set; }
        /// <summary>
        /// MSN
        /// </summary>		
        [ImporterHeader(Name = "MSN")]
        public string B_MSN { get; set; }
        /// <summary>
        /// 备注
        /// </summary>		
        [ImporterHeader(Name = "备注")]
        public string B_Description { get; set; }
        #endregion
    }
}
